package com.baturu.vin.hyundai.transformer;

import com.baturu.kit.kit.function.SafeFunction;
import com.baturu.vin.dto.EPCPartsImageDTO;
import com.baturu.vin.dto.superEPC.SEPCPartsDTO;
import com.baturu.vin.dto.superEPC.SEPCSearchPartsDTO;
import com.baturu.vin.hyundai.constant.HyundaiKiaCommonConstant;
import com.baturu.vin.hyundai.dto.KiaPartsDTO;
import com.google.common.collect.Lists;

/**
 * @Author: chenjiahao
 * @Time: 2019/7/9
 */
public class HyundaiKiaSEPCPartsTransformer {
    public static final SafeFunction<KiaPartsDTO, SEPCPartsDTO> HYUNDAI_KIA_PARTS_TO_SEPC_PARTS = input -> {
        EPCPartsImageDTO imageDTO = new EPCPartsImageDTO();
        imageDTO.setImageUrl(input.getFinalPartsImageUrl());
        imageDTO.setImageCode(input.getGroupCode());
        imageDTO.setEpcPartsImagePositionDTOs(input.getPartsImagePositionDTOS());
        if (HyundaiKiaCommonConstant.Y.equals(input.getFilted())) {
            return SEPCPartsDTO.builder()
                    .epcPartsImageDTOs(Lists.newArrayList(imageDTO))
                    .build();
        }
        return SEPCPartsDTO.builder()
                .partsCode(input.getFinalPartsCode())
                .epcDesc(input.getEpcRemark())
                .epcName(input.getFinalPartName())
                .installNum(input.getCount())
                .callout(input.getGroupNumber())
                .imageUrl(input.getFinalPartsImageUrl())
                .epcPartsImageDTOs(Lists.newArrayList(imageDTO))
                .btrPartsName(input.getBtrPartsName())
                .build();
    };

    public static final SafeFunction<KiaPartsDTO, SEPCSearchPartsDTO> PARTS_TO_SEARCH_PARTS = input -> {
        EPCPartsImageDTO imageDTO = new EPCPartsImageDTO();
        imageDTO.setImageUrl(input.getFinalPartsImageUrl());
        imageDTO.setImageCode(input.getGroupCode());
        imageDTO.setEpcPartsImagePositionDTOs(input.getPartsImagePositionDTOS());
        return SEPCSearchPartsDTO.builder()
                .partsDTO(SEPCPartsDTO.builder()
                        .partsCode(input.getFinalPartsCode())
                        .btrPartsName(input.getBtrPartsName())
                        .callout(input.getGroupNumber())
                        .imageUrl(input.getFinalPartsImageUrl())
                        .epcName(input.getFinalPartName())
                        .epcDesc(input.getEpcRemark())
                        .epcPartsImageDTOs(Lists.newArrayList(imageDTO))
                        .installNum(input.getCount())
                        .build())
                .build();
    };

    public static final SafeFunction<KiaPartsDTO, KiaPartsDTO> BUILD_FILERD_PARTS_HOST_POINT = input ->
            KiaPartsDTO.builder()
                    .partsId("")
                    .finalPartsImageX(input.getFinalPartsImageX())
                    .finalPartsImageY(input.getFinalPartsImageY())
                    .finalPartsImageOffsetX(input.getFinalPartsImageOffsetX())
                    .finalPartsImageOffsetY(input.getFinalPartsImageOffsetY())
                    .finalPartsImageUrl(input.getFinalPartsImageUrl())
                    .finalPartsCode(input.getFinalPartsCode())
                    .filted(HyundaiKiaCommonConstant.Y)
                    .groupNumber(input.getGroupNumber())
                    .build();
}
